In order to preserve power resources and lower overhead usage, conventional physical CPUs utilize memory monitoring instructions (e.g., monitor and mwait instructions) designating a range of memory that allow the physical CPU to stop instruction execution. The physical CPU executing the monitoring instruction is blocked from further execution and enters a wait state until there is a change to the designated memory by another physical CPU or an inter-processor interrupt is received.
However, in virtualized computing systems, if a virtual machine attempts to write to the designated memory block in order to wake-up the physical CPU executing memory monitoring instructions, a virtual machine exit is performed which causes a transition of control from the virtual machine to the software layer providing the virtualization, commonly referred to as a hypervisor (also known as a virtual machine monitor (VMM)).
Furthermore, if a virtual machine attempts to deliver an event to a thread executing on multiple host CPUs, the designated range of memory that the VM writes to in order to deliver an event to the destination thread changes when the destination thread moves from one host CPU to another host CPU.